{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "# How to use Tensorflow 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "Keras was designed as a high-level or meta API to accelerate the iterative workflow when designing and training deep neural networks with computational backends like TensorFlow, Theano, or CNTK. It has been integrated into TensorFlow in 2017 and is set to become the principal TensorFlow interface with the 2.0 release. You can also combine code from both libraries to leverage Keras’ high-level abstractions as well as customized TensorFlow graph operations."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "Please follow the installations instructions in `Installation Guide.md` in the root folder."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "## Imports & Settings "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:22.749015Z",
     "start_time": "2020-06-21T17:52:22.747183Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.288152Z",
     "start_time": "2020-06-21T17:52:22.750272Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "from pathlib import Path\n",
    "from copy import deepcopy\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "import sklearn\n",
    "from sklearn.datasets import make_circles # To generate the dataset\n",
    "\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.layers import Dense, Activation\n",
    "from tensorflow.keras import optimizers\n",
    "from tensorflow.keras.callbacks import TensorBoard\n",
    "\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.colors import ListedColormap\n",
    "from mpl_toolkits.mplot3d import Axes3D  # 3D plots\n",
    "\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.295313Z",
     "start_time": "2020-06-21T17:52:24.290133Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "# plotting style\n",
    "sns.set_style('white')\n",
    "# for reproducibility\n",
    "np.random.seed(seed=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.337784Z",
     "start_time": "2020-06-21T17:52:24.296666Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using GPU\n"
     ]
    }
   ],
   "source": [
    "gpu_devices = tf.config.experimental.list_physical_devices('GPU')\n",
    "if gpu_devices:\n",
    "    print('Using GPU')\n",
    "    tf.config.experimental.set_memory_growth(gpu_devices[0], True)\n",
    "else:\n",
    "    print('Using CPU')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.347219Z",
     "start_time": "2020-06-21T17:52:24.339001Z"
    }
   },
   "outputs": [],
   "source": [
    "results_path = Path('results')\n",
    "if not results_path.exists():\n",
    "    results_path.mkdir()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "## Input Data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "### Generate random data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "The target `y` represents two classes generated by two circular distribution that are not linearly separable because class 0 surrounds class 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.355947Z",
     "start_time": "2020-06-21T17:52:24.349070Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "# dataset params\n",
    "N = 50000\n",
    "factor = 0.1\n",
    "noise = 0.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.372842Z",
     "start_time": "2020-06-21T17:52:24.357430Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "# generate data\n",
    "X, y = make_circles(\n",
    "    n_samples=N,\n",
    "    shuffle=True,\n",
    "    factor=factor,\n",
    "    noise=noise)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.376651Z",
     "start_time": "2020-06-21T17:52:24.373644Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "# define outcome matrix\n",
    "Y = np.zeros((N, 2))\n",
    "for c in [0, 1]:\n",
    "    Y[y == c, c] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.388135Z",
     "start_time": "2020-06-21T17:52:24.377540Z"
    },
    "pycharm": {}
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Shape of: X: (50000, 2) | Y: (50000, 2) | y: (50000,)'"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f'Shape of: X: {X.shape} | Y: {Y.shape} | y: {y.shape}'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "### Visualize Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:24.912645Z",
     "start_time": "2020-06-21T17:52:24.389270Z"
    },
    "pycharm": {}
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(x=X[:, 0], \n",
    "                y=X[:, 1], \n",
    "                hue=y,\n",
    "               style=y,\n",
    "               markers=['_', '+']);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "## Build Keras Model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "Keras supports both a slightly simpler Sequential and more flexible Functional API. We will introduce the former at this point and use the Functional API in more complex examples in the following chapters.\n",
    "\n",
    "To create a model, we just need to instantiate a Sequential object and provide a list with the sequence of standard layers and their configurations, including the number of units, type of activation function, or name. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "### Define Architecture"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:25.312372Z",
     "start_time": "2020-06-21T17:52:24.913618Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "model = Sequential([\n",
    "    Dense(units=3, input_shape=(2,), name='hidden'),\n",
    "    Activation('sigmoid', name='logistic'),\n",
    "    Dense(2, name='output'),\n",
    "    Activation('softmax', name='softmax'),\n",
    "])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "The first hidden layer needs information about the number of features in the matrix it receives from the input layer via the input_shape argument. In our simple case, these are just two. Keras infers the number of rows it needs to process during training, through the batch_size argument that we will pass to the fit method below. \n",
    "\n",
    "Keras infers the sizes of the inputs received by other layers from the previous layer’s units argument."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "Keras provides numerous standard building blocks, including recurrent and convolutional layers, various options for regularization, a range of loss functions and optimizers, and also preprocessing, visualization and logging (see documentation on GitHub for reference). It is also extensible.\n",
    "\n",
    "The model’s summary method produces a concise description of the network architecture, including a list of the layer types and shapes, and the number of parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:25.317122Z",
     "start_time": "2020-06-21T17:52:25.313157Z"
    },
    "pycharm": {}
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "hidden (Dense)               (None, 3)                 9         \n",
      "_________________________________________________________________\n",
      "logistic (Activation)        (None, 3)                 0         \n",
      "_________________________________________________________________\n",
      "output (Dense)               (None, 2)                 8         \n",
      "_________________________________________________________________\n",
      "softmax (Activation)         (None, 2)                 0         \n",
      "=================================================================\n",
      "Total params: 17\n",
      "Trainable params: 17\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "## Compile Model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "Next, we compile the Sequential model to configure the learning process. To this end, we define the optimizer, the loss function, and one or several performance metrics to monitor during training:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:25.333423Z",
     "start_time": "2020-06-21T17:52:25.318189Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "model.compile(optimizer='rmsprop',\n",
    "              loss='binary_crossentropy',\n",
    "              metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "## Tensorboard Callback"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "Keras uses callbacks to enable certain functionality during training, such as logging information for interactive display in TensorBoard (see next section):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:25.442903Z",
     "start_time": "2020-06-21T17:52:25.334603Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "tb_callback = TensorBoard(log_dir=results_path / 'tensorboard', \n",
    "                          histogram_freq=1, \n",
    "                          write_graph=True, \n",
    "                          write_images=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "## Train Model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "To train the model, we call its fit method and pass several parameters in addition to the training data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:58.997775Z",
     "start_time": "2020-06-21T17:52:25.443830Z"
    },
    "pycharm": {}
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.7370 - accuracy: 0.4516 - val_loss: 0.6927 - val_accuracy: 0.3209\n",
      "Epoch 2/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.6920 - accuracy: 0.5541 - val_loss: 0.6919 - val_accuracy: 0.6980\n",
      "Epoch 3/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.6901 - accuracy: 0.6481 - val_loss: 0.6886 - val_accuracy: 0.5654\n",
      "Epoch 4/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.6859 - accuracy: 0.6456 - val_loss: 0.6838 - val_accuracy: 0.6978\n",
      "Epoch 5/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.6774 - accuracy: 0.7465 - val_loss: 0.6712 - val_accuracy: 0.7801\n",
      "Epoch 6/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.6610 - accuracy: 0.7747 - val_loss: 0.6498 - val_accuracy: 0.7812\n",
      "Epoch 7/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.6325 - accuracy: 0.8195 - val_loss: 0.6149 - val_accuracy: 0.7855\n",
      "Epoch 8/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.5908 - accuracy: 0.8768 - val_loss: 0.5672 - val_accuracy: 0.9342\n",
      "Epoch 9/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.5380 - accuracy: 0.9369 - val_loss: 0.5099 - val_accuracy: 0.9528\n",
      "Epoch 10/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.4772 - accuracy: 0.9550 - val_loss: 0.4468 - val_accuracy: 0.9631\n",
      "Epoch 11/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.4124 - accuracy: 0.9735 - val_loss: 0.3815 - val_accuracy: 0.9785\n",
      "Epoch 12/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.3482 - accuracy: 0.9876 - val_loss: 0.3186 - val_accuracy: 0.9917\n",
      "Epoch 13/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.2866 - accuracy: 0.9963 - val_loss: 0.2592 - val_accuracy: 0.9982\n",
      "Epoch 14/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.2309 - accuracy: 0.9992 - val_loss: 0.2073 - val_accuracy: 0.9997\n",
      "Epoch 15/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.1828 - accuracy: 0.9998 - val_loss: 0.1625 - val_accuracy: 0.9999\n",
      "Epoch 16/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.1421 - accuracy: 0.9999 - val_loss: 0.1256 - val_accuracy: 1.0000\n",
      "Epoch 17/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.1090 - accuracy: 0.9999 - val_loss: 0.0956 - val_accuracy: 1.0000\n",
      "Epoch 18/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0827 - accuracy: 0.9999 - val_loss: 0.0723 - val_accuracy: 1.0000\n",
      "Epoch 19/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0623 - accuracy: 0.9999 - val_loss: 0.0543 - val_accuracy: 1.0000\n",
      "Epoch 20/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0468 - accuracy: 0.9999 - val_loss: 0.0407 - val_accuracy: 1.0000\n",
      "Epoch 21/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0350 - accuracy: 0.9999 - val_loss: 0.0304 - val_accuracy: 1.0000\n",
      "Epoch 22/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0262 - accuracy: 0.9999 - val_loss: 0.0227 - val_accuracy: 1.0000\n",
      "Epoch 23/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0196 - accuracy: 0.9999 - val_loss: 0.0171 - val_accuracy: 1.0000\n",
      "Epoch 24/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0148 - accuracy: 0.9999 - val_loss: 0.0129 - val_accuracy: 1.0000\n",
      "Epoch 25/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0113 - accuracy: 0.9999 - val_loss: 0.0099 - val_accuracy: 1.0000\n",
      "Epoch 26/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0087 - accuracy: 0.9999 - val_loss: 0.0077 - val_accuracy: 1.0000\n",
      "Epoch 27/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0068 - accuracy: 0.9999 - val_loss: 0.0060 - val_accuracy: 1.0000\n",
      "Epoch 28/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0053 - accuracy: 0.9999 - val_loss: 0.0048 - val_accuracy: 1.0000\n",
      "Epoch 29/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0043 - accuracy: 0.9999 - val_loss: 0.0038 - val_accuracy: 1.0000\n",
      "Epoch 30/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0035 - accuracy: 0.9999 - val_loss: 0.0031 - val_accuracy: 1.0000\n",
      "Epoch 31/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0029 - accuracy: 0.9999 - val_loss: 0.0026 - val_accuracy: 1.0000\n",
      "Epoch 32/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0024 - accuracy: 0.9999 - val_loss: 0.0022 - val_accuracy: 1.0000\n",
      "Epoch 33/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0021 - accuracy: 0.9999 - val_loss: 0.0019 - val_accuracy: 1.0000\n",
      "Epoch 34/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0018 - accuracy: 0.9999 - val_loss: 0.0016 - val_accuracy: 1.0000\n",
      "Epoch 35/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0015 - accuracy: 0.9999 - val_loss: 0.0014 - val_accuracy: 1.0000\n",
      "Epoch 36/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0014 - accuracy: 0.9999 - val_loss: 0.0013 - val_accuracy: 1.0000\n",
      "Epoch 37/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0012 - accuracy: 0.9999 - val_loss: 0.0011 - val_accuracy: 1.0000\n",
      "Epoch 38/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 0.0011 - accuracy: 0.9999 - val_loss: 0.0010 - val_accuracy: 1.0000\n",
      "Epoch 39/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 9.8354e-04 - accuracy: 0.9999 - val_loss: 9.2418e-04 - val_accuracy: 1.0000\n",
      "Epoch 40/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 8.9646e-04 - accuracy: 0.9999 - val_loss: 8.3958e-04 - val_accuracy: 1.0000\n",
      "Epoch 41/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 8.2900e-04 - accuracy: 0.9999 - val_loss: 7.6353e-04 - val_accuracy: 1.0000\n",
      "Epoch 42/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 7.5914e-04 - accuracy: 0.9999 - val_loss: 7.0773e-04 - val_accuracy: 1.0000\n",
      "Epoch 43/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 7.0713e-04 - accuracy: 0.9999 - val_loss: 6.5704e-04 - val_accuracy: 1.0000\n",
      "Epoch 44/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 6.5578e-04 - accuracy: 0.9999 - val_loss: 6.1261e-04 - val_accuracy: 1.0000\n",
      "Epoch 45/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 6.1204e-04 - accuracy: 0.9999 - val_loss: 5.8287e-04 - val_accuracy: 1.0000\n",
      "Epoch 46/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 5.8115e-04 - accuracy: 0.9999 - val_loss: 5.3926e-04 - val_accuracy: 1.0000\n",
      "Epoch 47/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 5.4889e-04 - accuracy: 0.9999 - val_loss: 5.1401e-04 - val_accuracy: 1.0000\n",
      "Epoch 48/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 5.2061e-04 - accuracy: 0.9999 - val_loss: 4.8181e-04 - val_accuracy: 1.0000\n",
      "Epoch 49/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 4.9843e-04 - accuracy: 0.9999 - val_loss: 4.6231e-04 - val_accuracy: 1.0000\n",
      "Epoch 50/50\n",
      "313/313 [==============================] - 1s 2ms/step - loss: 4.7824e-04 - accuracy: 0.9999 - val_loss: 4.3262e-04 - val_accuracy: 1.0000\n"
     ]
    }
   ],
   "source": [
    "training=model.fit(X, \n",
    "          Y, \n",
    "          epochs=50,\n",
    "          validation_split=.2,\n",
    "          batch_size=128, \n",
    "          verbose=1, \n",
    "          callbacks=[tb_callback])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:53:09.220713Z",
     "start_time": "2020-06-21T17:53:08.828073Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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nT8b61ZteWCpvfEfteWBpbbcv9SWB06g2/IGnaCnp6ezdu1aAPLy8mjXrl2QIwo9F154IRs2bABg7dq1XHbZZUGOqOE5dOgQd9xxBw899BC33HILoHr1l3feeYe//OUvAERGRmIYBh06dFDd/krz58/njTfeYN68eVxwwQVMnz6djIwM1asfLFmyxDfGev/+/TidTq688sqzum7VlgeW2hv/UFseOGrLA0NteeAEui03TNM0/RJpEJyY+fXrr7/GNE2eeuopUlNTgx1Wg1dYWMgDDzzAW2+9RUFBAZMmTcLtdtOmTRtycnKwWq3BDrFBycnJ4f3336dNmza+sscee4ycnBzV6690/PhxHnnkEQ4dOkRlZSV33XUXqamp+j/rRyNGjCA7OxuLxaJ69QOXy8UjjzzCvn37MAyDBx98kPj4+LO6btWW+5/acf9TWx44assDT225fwW6LW/QCbqIiIiIiIhIqGjQj7iLiIiIiIiIhAol6CIiIiIiIiL1gBJ0ERERERERkXpACbqIiIiIiIhIPaAEXURERERERKQeUIIuIiIiIiIiUg8oQRcRERERERGpB/4/9qqkGohe9lgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1008x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(ncols=2, figsize=(14,4))\n",
    "pd.DataFrame(training.history)[['accuracy', 'val_accuracy']].plot(ax=axes[0])\n",
    "pd.DataFrame(training.history)[['loss', 'val_loss']].plot(ax=axes[1])\n",
    "sns.despine()\n",
    "fig.tight_layout();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "## Get Weights"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:59.440830Z",
     "start_time": "2020-06-21T17:52:59.437833Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "hidden = model.get_layer('hidden').get_weights()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:59.452133Z",
     "start_time": "2020-06-21T17:52:59.442164Z"
    },
    "pycharm": {}
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(2, 3), (3,)]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[t.shape for t in hidden]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "## Plot Decision Boundary"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {}
   },
   "source": [
    "The visualization of the decision boundary resembles the result from the manual network implementation. The training with Keras runs a multiple faster, though."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:59.466264Z",
     "start_time": "2020-06-21T17:52:59.453070Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "n_vals = 200\n",
    "x1 = np.linspace(-1.5, 1.5, num=n_vals)\n",
    "x2 = np.linspace(-1.5, 1.5, num=n_vals)\n",
    "xx, yy = np.meshgrid(x1, x2)  # create the grid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:59.470273Z",
     "start_time": "2020-06-21T17:52:59.467673Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "X_ = np.array([xx.ravel(), yy.ravel()]).T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:52:59.925715Z",
     "start_time": "2020-06-21T17:52:59.471270Z"
    },
    "pycharm": {}
   },
   "outputs": [],
   "source": [
    "y_hat = np.argmax(model.predict(X_), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:53:19.865039Z",
     "start_time": "2020-06-21T17:53:19.491207Z"
    },
    "pycharm": {},
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create a color map to show the classification colors of each grid point\n",
    "cmap = ListedColormap([sns.xkcd_rgb[\"pale red\"],\n",
    "                       sns.xkcd_rgb[\"denim blue\"]])\n",
    "\n",
    "# Plot the classification plane with decision boundary and input samples\n",
    "plt.contourf(xx, yy, y_hat.reshape(n_vals, -1), cmap=cmap, alpha=.25)\n",
    "\n",
    "# Plot both classes on the x1, x2 plane\n",
    "data = pd.DataFrame(X, columns=['$x_1$', '$x_2$']).assign(Class=pd.Series(y).map({0:'negative', 1:'positive'}))\n",
    "sns.scatterplot(x='$x_1$', y='$x_2$', hue='Class', data=data, style=y, markers=['_', '+'], legend=False)\n",
    "sns.despine()\n",
    "plt.title('Decision Boundary');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:53:00.488654Z",
     "start_time": "2020-06-21T17:53:00.485554Z"
    }
   },
   "outputs": [],
   "source": [
    "%load_ext tensorboard"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T17:53:30.334930Z",
     "start_time": "2020-06-21T17:53:28.300283Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "      <iframe id=\"tensorboard-frame-d9fe2327f47dcc1e\" width=\"100%\" height=\"800\" frameborder=\"0\">\n",
       "      </iframe>\n",
       "      <script>\n",
       "        (function() {\n",
       "          const frame = document.getElementById(\"tensorboard-frame-d9fe2327f47dcc1e\");\n",
       "          const url = new URL(\"/\", window.location);\n",
       "          url.port = 6007;\n",
       "          frame.src = url;\n",
       "        })();\n",
       "      </script>\n",
       "  "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%tensorboard --logdir results/tensorboard/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "254px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
